<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-once指令</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>

<!--
    我们学过的指令：
      1.v-bind:单向绑定解析表达式，可简写为  :xxx
      2.v-model:双向数据绑定
      3.v-for:遍历数组/对象/字符串
      4.v-on:绑定事件监听，可简写为@
      5.v-if:条件渲染（动态控制节点是否存在）
      6.v-else:条件渲染（动态控制节点是否存在）
      7.v-show:条件渲染（动态控制节点是否展示）
      8.v-text:
        a.作用：向其所在的节点中渲染文本内容
        b.与插值语法的区别：v-text会替换节点中的内容，{{xxx}}则不会
      9.v-html:
        a.作用：向指定节点中渲染包含html结构的内容
        b.与插值语法的区别：
          （1）v-html会替换掉节点中所有的内容，{{xxx}}则不会
          （2）v-html可以识别html结构
        c.严重注意：v-html有安全性问题！！！
          （1）在网站上动态渲染任意HTML是非常危险的，容易导致XSS攻击
          （2）一定要在可信的内容上使用v-html，永远不要用在用户提交的内容上！
      10.v-cloak：
         1.本质是一个特殊属性，Vue实例创建完毕并接管容器后，会删掉v-cloak属性
         2.使用css配合v-cloak可以解决网速慢时页面展示出{{xxx}}的问题
      11.v-once:
         1.v-once所在的节点在初次渲染后，就视为静态内容了
         2.以后数据的改变不会引起v-once所在结构的更新，可以用于优化性能
-->
<div id="root">
  <h2 v-once>初始化的n值是：{{n}}</h2>
  <h2>当前的n值是：{{n}}</h2>
  <button @click="n++">点我n+1</button>
</div>

</body>

<script type="text/javascript">
  Vue.config.productionTip = false

  const vm = new Vue({
    el: '#root',
    data: {
      n: 1
    },
    watch: {},
    computed: {},
    methods: {},
  })
</script>

</html>